package com.epam.iunna.bookshop.controller.filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
 * 
 * Фильтр для установки кодировки. 
 *
 */
public class SetEncodingFilter implements Filter {
/**
 * Имя кодировки.
 */
    String encoding = null;
    
    /**
     * Установка кодировки из параметра в веб хмл.
     * По дефолту utf-8.
     * @param request его мы и будем декодировать.
     * @param response ответ.
     * @param chain цепочка на след фильтр.
     * @throws IOException .
     * @throws ServletException .
     */
    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
    throws IOException, ServletException {
        
        if (encoding == null) {
            // если кодировка не прописана ставим utf-8 
            encoding = "utf-8"; 
        }
        
        // сама декодировка
        request.setCharacterEncoding(encoding);
        // вывод на экран текущей кодировки
       // System.out.println("Encodinf set to " + encoding); 
       
        chain.doFilter(request, response);
    }
    
    /**
     * Инициализация фильтра.
     * Загружает из веб хмл кодировку.
     * @param config
     *            конфигурация фильтра.
     * @throws ServletException .
     */
    public void init(final FilterConfig config) throws ServletException {
        // имя кодировки в веб хмл в параметре requestEncoding этого фильтра
        encoding = config.getInitParameter("requestEncoding");
    }

    /**
     * Деструктор фильтра.
     */
    public void destroy() {
    }
}
